#include "keyscan.h"
#define KEY_MENU 	0x10
#define KEY_ADD 	0x20
#define KEY_DEC 	0x40
#define KEY_SET 	0x80

unsigned char Trg;
unsigned char Cont;
unsigned char Release;
unsigned char cnt_plus;

sbit keyMenu= P1^1;
sbit keyAdd = P1^2;
sbit keyDec = P1^3;
sbit keySet = P1^4;


/**************************************************************************************
* FunctionName   : ScanSingleKey()
* Description    : 扫描独立键盘
* EntryParameter : None
* ReturnValue    : None
* attention      :
**************************************************************************************/
void ScanSingleKey(void)
{

    unsigned char ReadData = P2^0xff;     		// 1  读键值
    Trg = ReadData & (ReadData ^ Cont);      	// 2  得到按下触发值
    Release=  (ReadData ^ Trg ^ Cont);       	// 3  得到释放触发值
    Cont = ReadData;                         	// 4  得到所有未释放的键值

    P1=P1|0x1E; // 00011110 指示接口触发一次后置1

// 短按
    if(Trg&KEY_MENU)
    {
        keyMenu = 0;
        //ShowNum(1,1);
    }
    if(Trg&KEY_ADD)
    {
        keyAdd = 0;
        //ShowNum(2,2);
    }
    if(Trg&KEY_DEC)
    {
        keyDec = 0;
        //ShowNum(3,3);
    }
    if(Trg&KEY_SET)
    {
        keySet = 0;
        //ShowNum(4,4);
    }
// 长按
    if (Cont & KEY_SET) 			// 如果“SET”按键被按着不放
    {
        cnt_plus++;       		// 计时

        if (cnt_plus > 100) 	// 20ms*100 = 2S 如果时间到
        {
            keyMenu=0;      	// 你需要的执行的程序
            keyAdd=0;
            keyDec=0;
            keySet=0;

            cnt_plus=0;
        }
    }

}
/**************************************************************************************
* FunctionName   : ScanMatrixKey()
* Description    : 扫描矩阵键盘
* EntryParameter : None
* ReturnValue    : None
* attention      :
**************************************************************************************/
/*
void ScanMatrixKey(void)
{
}
*/
